#include <QtGui/QApplication>
#include <iostream>
#include <QImage>
#include "caresize.h"

using namespace std;

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QString inputfilename("Images/testwithbugv.jpg");
    QImage inputImage;
    inputImage.load(inputfilename);
    inputImage=inputImage.convertToFormat(QImage::Format_RGB32,inputImage.colorTable());

/*
    SobelFilter sobel;
    struct _sobel_arr gradient=sobel.sobel_arr(&gray);
     QImage testingImage=sobel.normalize(gradient.R,gradient.G,gradient.B);
    testingImage.save("test.jpg");
    */

        Caresize mycare(inputImage);
        mycare.horizontalInit();
        mycare.horizontalProcessN(200);
        //mycare.horizontalProcessN(200);
        mycare.horizontalAddN(200);
        int max=mycare.maxResizeH();
        int min=mycare.minResizeH();
        inputImage=mycare.resizeImageH(min);
        inputImage=mycare.resizeImageH(max);
        //inputImage=mycare.resizeImageH(inputImage.height()+200);
        inputImage=mycare.resizeImageH(inputImage.height()-100);
        mycare.horizontalProcessN(1);
        mycare.horizontalAddN(1);
        int max2=mycare.maxResizeH();
        int min2=mycare.minResizeH();
        if(max+1!=max2) cout << "Max not the same";
        if(min-1!=min2) cout << "Min not the same";
        inputImage=mycare.resizeImageH(inputImage.height()-100);
        mycare.horizontalProcessN(200);
        mycare.horizontalAddN(200);
        inputImage=mycare.resizeImageH(inputImage.height()+500);
        mycare.horizontalAddN(400);
        inputImage=mycare.resizeImageH(inputImage.height()+100);
        inputImage=mycare.resizeImageH(inputImage.height()-1100);
        inputImage=mycare.resizeImageH(inputImage.height()+800);

       inputImage.save("result.jpg");
    return 0;
}

